import axios from "axios";

const request = axios.create({
    baseURL: '/',//前后台不分离时放开
    // baseURL: process.env.VUE_APP_BASE_API,//这里是axios请求数据地址，也可以理解为请求前缀，这样在每次请求的时候就会拼接上这个前缀了
    // 默认是请求'/'即public目录下的数据  设置baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url 会自动根据当前环境动态获取
    timeout: 50000,//设置请求超时毫秒数
    //headers: {'X-Custom-Header': 'foobar'} //设置请求头
});
// 添加请求拦截器
request.interceptors.request.use(
    // 在发送请求之前做些什么
    function (config) {
        if(localStorage.getItem("token")) {
            //让每个请求携带一个自定义token
            config.headers['Authorization'] = 'Bearer ' + localStorage.getItem("token");
        }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);//这里是es6写法
});

// 添加响应拦截器
request.interceptors.response.use(

    // 对响应数据做点什么
    function (response) {
        if (response.headers.token) {
            //后台返回token 则更新本地token
            localStorage.setItem("token", response.headers.token);
        }
    const res = response.data;
    //如果返回401 则清空所有数据并跳转至登录页面
    if (res.code === 401) {
        localStorage.setItem("token", '');
        this.$router.push("/login");
        return;
    }
    return res;
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});

//更多详细请参考axios中文官网：http://www.axios-js.com/zh-cn/docs/
export default request;//导出自定义创建的axios请求

